From 28421419fdc3982c41a569595f2b475f9b584db4 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Thu, 28 Apr 2005 15:23:35 +0000 Subject: [PATCH] bitkeeper revision 1.1159.258.108 (4270fff77uXrP6ebmHEte60f5WLI-w) pgtable.c: Use virt_to_ptep. pgtable.h: add virt_to_ptep. --- .../arch/xen/i386/mm/pgtable.c | 20 ++++--------------- .../include/asm-xen/asm-i386/pgtable.h | 10 ++++++++-- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c index 6fe3f08632..336d109981 100644 --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c @@ -374,28 +374,19 @@ void pgd_free(pgd_t *pgd) void make_lowmem_page_readonly(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW); } void make_lowmem_page_writable(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW); } void make_page_readonly(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW); if ( (unsigned long)va >= (unsigned long)high_memory ) { @@ -410,10 +401,7 @@ void make_page_readonly(void *va) void make_page_writable(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW); if ( (unsigned long)va >= (unsigned long)high_memory ) { diff --git a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h index 06e91c8149..e008baf6fb 100644 --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h @@ -276,6 +276,7 @@ static inline void ptep_set_wrprotect(pte_t *ptep) if (pte_write(pte)) set_pte(ptep, pte_wrprotect(pte)); } + static inline void ptep_mkdirty(pte_t *ptep) { pte_t pte = *ptep; @@ -455,12 +456,17 @@ void make_page_writable(void *va); void make_pages_readonly(void *va, unsigned int nr); void make_pages_writable(void *va, unsigned int nr); -#define arbitrary_virt_to_machine(__va) \ +#define virt_to_ptep(__va) \ ({ \ pgd_t *__pgd = pgd_offset_k((unsigned long)(__va)); \ pud_t *__pud = pud_offset(__pgd, (unsigned long)(__va)); \ pmd_t *__pmd = pmd_offset(__pud, (unsigned long)(__va)); \ - pte_t *__pte = pte_offset_kernel(__pmd, (unsigned long)(__va)); \ + pte_offset_kernel(__pmd, (unsigned long)(__va)); \ +}) + +#define arbitrary_virt_to_machine(__va) \ +({ \ + pte_t *__pte = virt_to_ptep(__va); \ unsigned long __pa = (*(unsigned long *)__pte) & PAGE_MASK; \ __pa | ((unsigned long)(__va) & (PAGE_SIZE-1)); \ }) -- 2.30.2